//package com.wang.springbootinit.Listener;
//
//
//import com.wang.springbootinit.model.entity.Chart;
//import com.wang.springbootinit.model.entity.ExcelInfo;
//import com.wang.springbootinit.model.enums.ChartStatusEnum;
//import com.wang.springbootinit.model.result.ExcelHandleInfoResult;
//import com.wang.springbootinit.service.ChartService;
//import com.wang.springbootinit.service.ExcelInfoService;
//import com.wang.springbootinit.utils.ExcelUtils;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.stereotype.Component;
//
//
//import javax.annotation.Resource;
//import java.util.List;
//import java.util.Map;
//
//@Component
//@Slf4j
//public class RabbitmqListener {
//
//    @Resource
//    private ExcelInfoService excelInfoService;
//
//    @Resource
//    private ChartService chartService;
//
//    //queues = "message" 监听为message的topic的那个bean
//
//    /**
//     * mq消费者，将数据保存到数据库
//     *
//     * @param excelHandleInfoResult 要保存到数据库的数据信息
//     */
//    @RabbitListener(queues = "topic.excel.saveData")
//    public void excelProcess(ExcelHandleInfoResult excelHandleInfoResult) {
//        Boolean isSyncChart = excelHandleInfoResult.getIsSyncChart();
//        if (isSyncChart) {
//            //异步处理，需要获取当前chart的图表状态，状态成功才保存数据
//            syncSaveData(excelHandleInfoResult);
//        } else {
//            //同步处理，直接保存数据
//            ExcelInfo excelInfo = new ExcelInfo();
//            excelInfo.setChartId(excelHandleInfoResult.getChartId());
//            //图表数据
//            List<Map<Integer, String>> excelData = excelHandleInfoResult.getExcelData();
//            String excelDataJson = ExcelUtils.ExcelDataToJson(excelData);
//            excelInfo.setExcel_data(excelDataJson);
//            boolean save = excelInfoService.save(excelInfo);
//            if (!save) {
//                log.info("MQ消息处理，同步图表状态成功，保存数据失败");
//            }
//            log.info("MQ消息处理，同步图表状态成功，成功保存数据");
//        }
//    }
//
//    /**
//     * 异步保存excel表格数据
//     *
//     * @param excelHandleInfoResult
//     */
//    public void syncSaveData(ExcelHandleInfoResult excelHandleInfoResult) {
//        Chart chart = chartService.getById(excelHandleInfoResult.getChartId());
//        String status = chart.getStatus();
//        if (ChartStatusEnum.SUCCEED.getValue().equals(status)) {
//            ExcelInfo excelInfo = new ExcelInfo();
//            excelInfo.setChartId(excelHandleInfoResult.getChartId());
//            //图表数据
//            List<Map<Integer, String>> excelData = excelHandleInfoResult.getExcelData();
//            String excelDataJson = ExcelUtils.ExcelDataToJson(excelData);
//            excelInfo.setExcel_data(excelDataJson);
//            boolean save = excelInfoService.save(excelInfo);
//            if (!save) {
//                log.info("MQ消息处理，异步图表状态成功，保存数据失败");
//            }
//            log.info("MQ消息处理，异步图表状态成功，成功保存数据");
//        } else {
//            log.info("MQ消息处理，异步图表状态错误，取消保存数据");
//        }
//    }
//
//}
